package initialize

import (
	"fmt"
	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
	"go.uber.org/zap"
	"hosptial-record/global"
	"os"
	"path/filepath"
)

func GetEnvInfo(env string) bool {
	viper.AutomaticEnv()
	return viper.GetBool(env)
}

func InitConfig() {
	debug := GetEnvInfo("DEBUG")
	configFilePrefix := "config"
	currentDir, _ := os.Getwd()
	configFileName := filepath.Join(currentDir, fmt.Sprintf("%s-pro.yaml", configFilePrefix))
	if debug {
		configFileName = filepath.Join(currentDir, fmt.Sprintf("%s-dev.yaml", configFilePrefix))
	}
	v := viper.New()
	//文件路径设置
	v.SetConfigFile(configFileName)
	fmt.Println(configFileName)
	if err := v.ReadInConfig(); err != nil {
		panic(err)
	}
	// 解析文件
	if err := v.Unmarshal(&global.ServerConfig); err != nil {
		panic(err)
	}
	zap.S().Infof("配置信息: %v", global.ServerConfig)
	// 监听配置变化
	v.WatchConfig()
	v.OnConfigChange(func(in fsnotify.Event) {
		zap.S().Infof("配置文件产生变化: %s", in.Name)
		// 重载配置信息
		_ = v.ReadInConfig()
		_ = v.Unmarshal(&global.ServerConfig)
		zap.S().Infof("配置信息: %v", global.ServerConfig)
	})
}
